use HeThongSim
go
-- Khách Hàng Tìm Kiếm Sim
alter proc usp_TimKiem 
	@sothuebao varchar(11) = null, 
	@giatu float = null, 
	@giaden float = null , 
	@loaisim nvarchar(30) = null, 
	@nhamang nvarchar(10) = null
as
	begin tran
		declare @ThueBao varchar(13)
		set @ThueBao = '%' + @sothuebao + '%'
		--xuat so luong ket qua
		select count(*)
		from Sim s join Sim_LoaiSim sls on s.MaSanPham  = sls.MaSanPham 
		join  LoaiSim ls on sls.MaLoaiSim = ls.MaLoaiSim 
		join SanPham sp on sp.MaSanPham = s.MaSanPham 
		join NhaMang nm on nm.MaNhaMang = sp.MaNhaMang 
		where (s.SoThueBao like @ThueBao or @sothuebao is null) 
		and (sp.DonGia >=  @giatu  or @giatu is null )
		and (sp.DonGia >=  @giaden or @giaden is null )
		and (ls.TenLoaiSim like @loaisim or @loaisim is null) 
		and (nm.TenNhaMang like @nhamang or @nhamang is null)
		waitfor delay '0:0:10'
		--xuat danh sach ket qua
		select s.*,sp.DonGia, ls.TenLoaiSim, nm.TenNhaMang
		from Sim s join Sim_LoaiSim sls on s.MaSanPham  = sls.MaSanPham 
		join  LoaiSim ls on sls.MaLoaiSim = ls.MaLoaiSim 
		join SanPham sp on sp.MaSanPham = s.MaSanPham 
		join NhaMang nm on nm.MaNhaMang = sp.MaNhaMang 
		where (s.SoThueBao like @ThueBao or @sothuebao is null) 
		and (sp.DonGia >=  @giatu  or @giatu is null )
		and (sp.DonGia >=  @giaden or @giaden is null )
		and (ls.TenLoaiSim like @loaisim or @loaisim is null) 
		and (nm.TenNhaMang like @nhamang or @nhamang is null)
		
	commit tran
go
-- Nhân Viên Thêm Sim Vào Hệ Thống
alter procedure usp_ThemSim 
	@SoThueBao char(11), 
	@SoSeri char(20), 
	@DonGia float, 
	@MaLoaiSim int, 
	@MaNhaMang int
as
begin
	begin tran
		--Kiểm tra loại sim có tồn tại không
		if(not exists(select * from LoaiSim where MaLoaiSim = @MaLoaiSim))
		begin
			rollback
			return
		end

		--Kiểm tra nhà mạng có tồn tại không
		if(not exists(select * from NhaMang where MaNhaMang = @MaNhaMang))
		begin
			rollback
			return
		end

		--Kiểm tra sim có tồn tại không
		if(exists(select * from Sim where SoThueBao like @SoThueBao and SoSeri like @SoSeri))
		begin
			rollback
			return
		end

		--Thêm sản phẩm mới
		begin try
			insert into SanPham(DonGia, MaNhaMang, TinhTrang)  values (@DonGia, @MaNhaMang, N'Đang Bán')
			declare @MaSanPham int
			select @MaSanPham = max(MaSanPham) from SanPham
			insert into Sim(MaSanPham, SoThueBao, SoSeri)  values (@MaSanPham, @SoThueBao, @SoSeri)
			insert into Sim_LoaiSim (MaSanPham, MaLoaiSim) values (@MaSanPham, @MaLoaiSim)
		end try
		begin catch
			declare @error varchar(1000)
			set @error = N'Lỗi: ' + error_message()
			raiserror (@error,16,1)
			rollback tran
			return
		end catch
	commit tran
end
go